今天,依然是帶著想要富奸的心態來面對大家嗚嗚嗚,不過一個可以短短結束的 Model 卻分成上、中、下集...
卑鄙源之助(搓手)
當我們的資料需要新增到資料庫的時候,一樣可以使用 ORM 語法完成。
我們將鏡頭切回 Controller,把以下的 Code 跑過一次。
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Create a new user instance.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// Validate the request...
$user = new User;
$user->name = $request->name;
$user->save();
}
}
store
這個 function 是讓 Route 送過來的 Request
能夠新增一個 User Model 的實體,$user->name
就是將 $request->name
的值存入並由 $user->save()
存入 Model 內,Model 再將這些資料存入資料庫內。
你也可以用 array 的方式存入多個欄位的資料。
$user = new User([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password)
])->save();
更新資料有兩種方式,一種是先在 query 的階段挑選特定某筆資料,同樣用 save()
進行更新。
$user = App\Models\User::find(1);
$user->name = 'Alex';
$user->save();
另外則是使用 update()
進行更新,update
也可在針對某些屬性的資料進行大量更新時透過 array
的方式使用。
$user = App\Models\User::
where('job','bug Engineer')
->where('country','Chinese Taipei')
->update([
'country' => 'Taiwan'
]);
關於 update 以及 save 底層實作的不同可以參考此篇 Laravel Eloquent 事件中的 Updated 和 Saved 原來不一樣
上面的文章提到類似 isDirty
、isClean
的概念,我以官方文件舉例。
$user = User::create([
'first_name' => 'Taylor',
'last_name' => 'Otwell',
'title' => 'Developer',
]);
$user->title = 'Painter';
$user->isDirty(); // true
$user->isDirty('title'); // true
$user->isDirty('first_name'); // false
$user->isClean(); // false
$user->isClean('title'); // false
$user->isClean('first_name'); // true
$user->save();
$user->isDirty(); // false
$user->isClean(); // true
這兩個方法會驗證你是否在載入 Model 有將 Model 實體進行更改,因此在某些商業邏輯下,你可能需要驗證這個資料是否被更改,也是非常實用的方法。
OK,這幾天真的是好懶好想停刊 XDDDDD,看我今天壓線發文就知道,撐下去撐下去啊(對自己吶喊)
明天見囉!!!